package controlLayer;
import java.util.ArrayList;

import ExceptionsPakke.*;
import modelLayer.Kunde;
import modelLayer.Udlejning;
import modelLayer.UdlejningsKartotek;
/**
 * Kontroller klasse for UdlejningsKartotek.
 * 
 * @author Gruppe 2 
 * @version 1.0
 */
public class UdlejningsKartotekCTR
{
    
    private UdlejningsKartotek uk;

    /**
     * Konstruktøren for klassen UdlejningsKartotekCtr.
     */
    public UdlejningsKartotekCTR()
    {
        uk = UdlejningsKartotek.getInstance();
    }
    
    /**
     * Denne metode opretter et objekt af Udlejning.
     * Derefter tilføjes objektet af Udlejning til objektet af UdlejningsKartotek.
     * @param long id
     * @param String tidsperiode
     * @param String beskrivelse
     * @param int pris
     */
    public void opretUdlejning (long id, String tidsperiode, String beskrivelse, int pris) throws NullValueException
    {
    	if(id != 0 && tidsperiode != null && beskrivelse != null && pris != 0 && tidsperiode.trim().length() != 0 &&  beskrivelse.trim().length() != 0)
        {
    		Udlejning u = new Udlejning(id, tidsperiode, beskrivelse, pris);
    		uk.addUdlejning(u);
        }
    	else
    	{
    		throw new NullValueException("Nogle af tekstfelterne er ikke udfyldte, husk nul er ikke et accepteret tal.");
    	}
    }
    
    /**
     * Denne metode finder et objekt af Udlejning i objektet af UdlejningsKartotek.
     * @param long id
     * @return long id
     */
    public Udlejning findUdlejning(long id) throws NullValueException, NoSuchUdlejningException
    {
    	if(id != 0)
    	{
    		if(uk.findUdlejning(id) != null)
    		{
        return uk.findUdlejning(id);
    		}
    		else
    		{
    			throw new NoSuchUdlejningException("Udlejningen findes ikke");
    		}
    	}
    	else
    	{
    		throw new NullValueException("Nogle af tekstfelterne er ikke udfyldte, husk nul er ikke et accepteret tal.");
    	}
    }
    
    public ArrayList<String> udlejningsInfo(long udlejningsId) throws NullValueException, NoSuchUdlejningException
    {
		ArrayList<String> udlejning = new ArrayList<String>();
    	if(udlejningsId != 0)
    	{
    		Udlejning u = uk.findUdlejning(udlejningsId);
    		if(u!=null)
    		{
    	 
    			udlejning.add("ID: "+Long.toString(u.getId())+"\n");
    			udlejning.add("Beskrivelse: "+u.getBeskrivelse()+"\n");
    			udlejning.add("Tidsperiode: "+u.getTidsperiode()+"\n");
    			udlejning.add("Pris: "+Integer.toString(u.getPris())+"\n");
    	 
    		}
    		else
    		{
    			throw new NoSuchUdlejningException("Udlejningen findes ikke");
    		}
    	}
    	else
    	{
    		throw new NullValueException("Nogle af tekstfelterne er ikke udfyldte, husk nul er ikke et accepteret tal.");
    	}
    	

     return udlejning;
    }
        
    /**
     * Denne metode opdaterer et objekt af Udlejning i objektet af UdlejningsKartotek
     * @param long id
     * @param long nyId
     * @param String tidsperiode
     * @param String beskrivelse
     * @param int pis
     */
    public void opdaterUdlejning(long id, long nyId, String tidsperiode, String beskrivelse, int pris) throws
    NullValueException, NoSuchUdlejningException
    {
    	if(id != 0 && nyId != 0 && tidsperiode != null && beskrivelse != null && pris != 0 && tidsperiode.trim().length() != 0 && beskrivelse.trim().length() != 0)
        {
    		uk.opdaterUdlejning(id, nyId, tidsperiode, beskrivelse, pris);
        }
    	else
    	{
    		throw new NullValueException("Nogle af tekstfelterne er ikke udfyldte, husk nul er ikke et accepteret tal.");
    	}
    }
    
    /**
     * Denne metode Sletter et objekt af Udlejning i objektet af UdlejningsKartotek.
     * @param long id
     */
    public void fjernUdlejning(long id) throws NullValueException, NoSuchUdlejningException
    {
    	if(id != 0)
    	{
    		uk.sletUdlejning(id);
    	}
    	else
    	{
    		throw new NullValueException("Nogle af tekstfelterne er ikke udfyldte, husk nul er ikke et accepteret tal.");
    	}
    }
    
    /**
     * Denne metode sender en liste med alle udlejninger videre op til ui lageret
     * @return ArrayList<String>
     */
    public ArrayList<String> printUdlejningsKartotek()
    {
        
        return uk.printUdlejningsKartotek();
    }
    
    
}
